package com.example.oasystem.service.impl;

import com.example.oasystem.dao.role.AoaRoleDao;
import com.example.oasystem.entity.list.AoaSysMenu;
import com.example.oasystem.entity.page.Page;
import com.example.oasystem.entity.role.AoaRole;
import com.example.oasystem.entity.role.AoaRolePowerList;
import com.example.oasystem.service.AoaRoleService;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Repository
@Mapper
public class AoaRoleServiceImpl implements AoaRoleService {

    @Autowired
    private AoaRoleDao aoaRoleDao;

    @Override
    public List<AoaRole> selectRolePowerMenu() {
        return aoaRoleDao.selectRolePowerMenu();
    }

    @Override
    public List<AoaRole> selectRole(Page page,String roleName) {
        return aoaRoleDao.selectRole(page,roleName);
    }

    @Override
    public List<AoaSysMenu> selectRoleMenu(long roleid,Page page) {
        return aoaRoleDao.selectRoleMenu(roleid,page);
    }

    @Override
    public List<AoaSysMenu> selectPowerMenu(long roleId) {
        return aoaRoleDao.selectPowerMenu(roleId);
    }

    @Override
    public AoaRole selectOneRole(long roleid) {
        return aoaRoleDao.selectOneRole(roleid);
    }

    @Transactional
    @Override
    public int addRole(AoaRole aoaRole, List<AoaSysMenu> list) {
        AoaRole role = aoaRoleDao.selectRoleName(aoaRole.getRoleName());
        if (role!=null && aoaRole.getRoleName().equals(role.getRoleName())){
            return 0;
        }
        aoaRoleDao.addRole(aoaRole);
        aoaRoleDao.insertPower(list,aoaRole.getRoleId());
        return 1;
    }

    @Override
    public int updateRole(AoaRole aoaRole) {
        AoaRole role = aoaRoleDao.selectRoleName(aoaRole.getRoleName());
        System.out.println("roleeeeeeeeeeeeeeeeeeeeeeeeeeeeee = " + role);
        if (role!=null
                && !aoaRole.getRoleId().equals(role.getRoleId())
                && aoaRole.getRoleName().equals(role.getRoleName())){
            return 0;
        }
        aoaRoleDao.updateRole(aoaRole);
        return 1;
    }

    @Transactional
    @Override
    public void delRole(long roleId) {
        aoaRoleDao.delRole(roleId);
        aoaRoleDao.deletePower(roleId);
    }

    @Override
    public int updateRolePower(int isShow, long menuId, long roleId) {
        int linNumber = aoaRoleDao.updateRolePower(isShow, menuId, roleId);
        return linNumber;

    }


}
